package com.example.common.utils;

import lombok.extern.slf4j.Slf4j;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.sql.SQLIntegrityConstraintViolationException;


@ControllerAdvice
@ResponseBody
@Slf4j
public class GlobalExceputionHandler {

//
////    TODO 测试开启异常处理器，开发关闭异常处理器
//    @Order(-1)
//    @ExceptionHandler(value = {UsernameNotFoundException.class, BadCredentialsException.class})
//    public Resultb adminNullexceputionHandler(Exception ex){
//        log.error("全局异常处理：{}",ex.getMessage());
//        return new Resultb().error().message(ex.getMessage());
//    }
//
//    @ExceptionHandler(value = {NullPointerException.class})
//    public Resultb nullexceputionHandler(Exception ex){
//        log.error("全局异常处理：{}",ex.getMessage());
//        return new Resultb().error().message("空指针异常，请联系管理员！");
//    }
//
//
//    /*
//    * 全局异常处理，不可重复实现此方法，应为重复实现此方法，回事下面一个异常处理会覆盖上一个异常处理
//    * @ExceptionHandler（）内部可以传一个数组
//    * */
//    @ExceptionHandler(value = {SQLIntegrityConstraintViolationException.class})
//    public com.example.common.utils.R<String> exceputionHandler(Exception ex){
//        if(ex.getMessage().contains("Duplicate entry")){
//            String[] splits = ex.getMessage().split(" ");
//            String msg = splits[9] + "已存在";
//            return com.example.common.utils.R.error(msg);
//        }
//        return com.example.common.utils.R.error("未知错误");
//    }


//    @ExceptionHandler(value = {Exception.class})
//    public Resultb globalexceputionHandler(Exception ex){
//        log.error("全局异常处理：{}",ex.getMessage());
//        return new Resultb().error().message("程序出现错误，请联系管理员！");
//    }



}
